package com.neusoft.service;

import com.neusoft.domain.VirtualWallet;
import com.neusoft.exception.InsufficientFundsException;

import java.math.BigDecimal;

public interface ClientWalletService {
    void deposit(Long userId, BigDecimal amount);
    void withdraw(Long userId, BigDecimal amount) throws InsufficientFundsException;
    BigDecimal getBalance(Long userId);
    void transfer(Long fromUserId, Long toUserId, BigDecimal amount) throws InsufficientFundsException;

    BigDecimal getCreditLimit(Long userId);

    void useCredit(Long userId, BigDecimal amount) throws InsufficientFundsException;
    void initializeWallet(Long userId);
    VirtualWallet getWalletByUserId(Long userId);
    void pay(Long userUserId, Long merchantUserId, BigDecimal amount) throws InsufficientFundsException;
}